package com.maben.fastdfs;

import org.csource.fastdfs.*;
import org.springframework.core.io.ClassPathResource;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;

public class ClientTest {
    public static void main(String[] args)throws Exception {
//        testUpload();
//        testDelete();
        testDownload();
    }

    /**
     * 测试下载
     */
    private static void testDownload()throws Exception {
        String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();
        //1、加载配置文件
        ClientGlobal.init(filePath);
        //2、创建TrackerClient对象
        TrackerClient tracker = new TrackerClient();
        //并获取TrackerServer对象
        TrackerServer trackerServer = tracker.getConnection();
        //3、创建StorageClient
        StorageClient storageClient = new StorageClient(trackerServer,null);
        //4、下载文件(字节数组), 参数1：组名，参数2：文件路径
        byte[] fileData = storageClient.download_file("group1", "M00/00/00/wKgGgGRGDs6Ac85UAAAAEU-nprA632.txt");
        final BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream("temp.txt"));
        outputStream.write(fileData);
        outputStream.flush();
        outputStream.close();
    }

    /**
     * 测试删除
     */
    private static void testDelete()throws Exception {
        String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();
        //1、加载配置文件
        ClientGlobal.init(filePath);
        //2、创建TrackerClient对象
        TrackerClient tracker = new TrackerClient();
        //并获取TrackerServer对象
        TrackerServer trackerServer = tracker.getConnection();
        //3、创建StorageClient
        StorageClient storageClient = new StorageClient(trackerServer,null);
        //4、删除文件, 参数1：组名，参数2：文件路径
        int delete = storageClient.delete_file("group1", "M00/00/00/wKgGgGRGDMmAYbYrAAAAEU-nprA038.txt");
        System.out.println(delete==0?"删除成功":"删除失败");
    }

    /**
     * 测试上传
     *
     * 输出结果：
          group1
          M00/00/00/wKgGgGRGDs6Ac85UAAAAEU-nprA632.txt
          上传完成
     */
    private static void testUpload()throws Exception {
        String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();
        // 1、加载配置文件，配置文件中的内容就是 tracker 服务的地址。
        ClientGlobal.init(filePath);
        // 2、创建一个 TrackerClient 对象。直接 new 一个。
        TrackerClient trackerClient = new TrackerClient();
        // 3、使用 TrackerClient 对象创建连接，获得一个 TrackerServer 对象。
        TrackerServer trackerServer = trackerClient.getConnection();
        // 4、创建一个 StorageServer 的引用，值为 null
        StorageServer storageServer = null;
        // 5、创建一个 StorageClient 对象，需要两个参数 TrackerServer 对象、StorageServer 的引用
        StorageClient storageClient = new StorageClient(trackerServer, storageServer);
        // 6、使用 StorageClient 对象上传图片。
        //扩展名不带“.”
        String[] strings = storageClient.upload_file("/Users/maben/Downloads/test.txt", "txt",null);
        // 7、返回数组。包含组名和图片的路径。
        for (String string : strings) {
            System.out.println(string);
        }
        System.out.println("上传完成");
    }
}
